﻿using MachineVision.Core.TemplateMatch.Shared;
using MaterialDesignThemes.Wpf;

namespace MachineVision.Core.TemplateMatch.LocalDeformable
{
    public class LocalDeformableInputParameter : BaseParameter
    {
        public override void ApplyDefaultParameter()
        {
            NumLevels = "auto";
            AngleStart = 0;
            AngleExtent = 0;
            AngleStep = "auto";
            ScaleRMin = 0;
            ScaleRMax = 0;
            ScaleRStep = "auto";
            ScaleCMin = 1;
            ScaleCMax = 1;
            ScaleCStep = "auto";
            Optimization = "auto";
            Metric = "use_polarity";
            Contrast = "auto";
            MinContrast = "auto"; 
        }
        private string numlevels;
        private double angleStart;
        private double angleExtent;
        private string angleStep;
        private string scaleRStep;
        private double scaleRMin;
        private double scaleRMax;
        private double scaleCMin;
        private double scaleCMax;
        private string scaleCStep;
        private string optimization;
        private string metric;
        private string contrast;
        private string minContrast;

        public string NumLevels
        {
            get { return numlevels; }
            set { numlevels = value; }
        }

        public double AngleStart
        {
            get { return angleStart; }
            set { angleStart = value; }
        }

        public double AngleExtent
        {
            get { return angleExtent; }
            set { angleExtent = value; }
        }

        public string AngleStep
        {
            get { return angleStep; }
            set { angleStep = value; }
        }

        public double ScaleRMin
        {
            get { return scaleRMin; }
            set { scaleRMin = value; }
        }

        public double ScaleRMax
        {
            get { return scaleRMax; }
            set { scaleRMax = value; }
        }

        public string ScaleRStep
        {
            get { return scaleRStep; }
            set { scaleRStep = value; }
        }

        public double ScaleCMin
        {
            get { return scaleCMin; }
            set { scaleCMin = value; }
        }

        public double ScaleCMax
        {
            get { return scaleCMax; }
            set { scaleCMax = value; }
        }

        public string ScaleCStep
        {
            get { return scaleCStep; }
            set { scaleCStep = value; }
        }

        public string Optimization
        {
            get { return optimization; }
            set { optimization = value; }
        }

        public string Metric
        {
            get { return metric; }
            set { metric = value; }
        }

        public string Contrast
        {
            get { return contrast; }
            set { contrast = value; }
        }
        public string MinContrast
        {
            get { return minContrast; }
            set { minContrast = value; }
        }

    }
}